import * as THREE from "three";
const renderer = new THREE.WebGLRenderer({ antialias: true });
//定义渲染器
renderer.setClearColor(0xffceeb)
//设置背景色
import * as THREE from "three/webgpu";
const renderer = new THREE.WebGPURenderer({ antialias: true });
//定义渲染器
renderer.setClearColor(0xffceeb)
//设置背景色
绘制前三个顶点组成一个三角形。因为顶点顺序是顺时针,看到的是背面。 使用 `side: THREE.DoubleSide` 使其可见。调整右侧 `color` 和 `side`。
const bg = new THREE.BufferGeometry();
const verts = new Float32Array([
-1.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, -1.0, 0.0, -1.0, -1.0, 0.0,
]);
//方形的四个顶点,按顺时针顺序
bg.setAttribute("position", new THREE.BufferAttribute(verts, 3));
//设置位置属性,读取顶点数组,每3个为一组
const material = new THREE.MeshBasicMaterial({
color: 0x0000ff,
side: THREE.DoubleSide // Initially DoubleSide
});
const mesh = new THREE.Mesh(bg, material);
使用索引 `[1, 0, 3, 1, 3, 2]` 从4个顶点绘制两个三角形组成一个四边形。 默认看到正面。调整右侧 `color` 和 `side`。
const bg = new THREE.BufferGeometry();
const verts = new Float32Array([
-1.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, -1.0, 0.0, -1.0, -1.0, 0.0,
]);//方形的四个顶点,按顺时针顺序
const index = new Uint16Array([1, 0, 3, 1, 3, 2]);
//定义顶点的编号数据
bg.setAttribute("position", new THREE.BufferAttribute(verts, 3));
//设置位置属性,读取顶点数组,每3个为一组
bg.setIndex(new THREE.BufferAttribute(index, 1));
//设置编号顺序
const material = new THREE.MeshBasicMaterial({
color: 0xff8800,
side: THREE.FrontSide // Initially FrontSide
});
const mesh = new THREE.Mesh(bg, material);
使用 `geometry.addGroup` 为索引 0-2 (第一个三角形) 和 3-5 (第二个三角形) 指定不同材质。 右侧控件可调整两种材质的 `color` 和 `wireframe`。
bg.addGroup(0, 3, 0); // Triangle 1, Material 0
//通过addGroup方法,定义起始顶点编号,定义延续到哪个编号,定义对应材质编号
bg.addGroup(3, 3, 1); // Triangle 2, Material 1
const materials = [
new THREE.MeshBasicMaterial({ // Material 0
color: 0xff0000, // Red
side: THREE.DoubleSide
}),
new THREE.MeshBasicMaterial({ // Material 1
color: 0x00ff00, // Green
wireframe: true,
side: THREE.DoubleSide
})
];
//定义两个材质
const plane = new THREE.Mesh(bg, materials);
演示 `color`, `wireframe`, 和 `side` 属性。调整右侧控件查看效果。
const material = new THREE.MeshBasicMaterial({
color: 0xff00ff, // Magenta color
wireframe: true, // Show as wireframe
side: THREE.DoubleSide // Render both faces
});
const mesh = new THREE.Mesh(indexedGeometry, material);